// axios 传参 params，data
// params的对象参数名和值，axios源码会把参数和值，拼接在url?后面给后台（query查询）
// data的对象参数名和值，axios源码会把参数和值，拼接在请求体里（body参数）

import request from '@/utils/request'
// import store from '@/store'

// 注册API data包含 -> username, password, repassword
const regAPI = (data) => request.post('/api/reg', data)
// const regAPI = ({ username, password, repassword }) => {
//   return request({
//     url: '/api/reg',
//     method: 'POST',
//     data: {
//       username,
//       password,
//       repassword,
//     },
//   })
// }

// 登录API data包含 -> username password
const loginAPI = (data) => request.post('/api/login', data)

// 获取用户信息API,，token在请求拦截器里就已经携带了这里就不需要写了。
const getUserInfoAPI = () => request.get('/my/userinfo')
// const getUserInfoAPI = () =>
//   request.get('/my/userinfo', {
//     // 传参给后台：params(查询字符串query)，data(请求体body)，headers(请求头)
//     headers: {
//      // 这里取token不可以使用 this.$store.state.token 这里this不是组件对象不能用this.$store拿到store对象。
//       // 必须直接引入store/index.js
//       Authorization: store.state.token,
//     },
//   })

// 请求侧边栏数据API，token在请求拦截器里就已经携带了这里就不需要写了。
const getMenusAPI = () => request.get('/my/menus')
// const getMenusAPI = () =>
//   request.get('/my/menus', {
//     headers: {
//       Authorization: store.state.token,
//     },
//   })

// 更新用户信息API data包含 -> id username nickname email user_pic
const updtaeUserInfoAPI = (data) => request.put('/my/userinfo', data)

// 更新用户头像API avatar
const updtaeUserAvatarAPI = (avatar) =>
  request.patch('/my/update/avatar', { avatar })

// 更新用户密码API data包含 -> old_pwd：旧密码，new_pwd：新密码，re_pwd：重复新密码
const updtaeUserPwdAPI = (data) => request.patch('/my/updatepwd', data)

// 获取文章分类API
const getArticleCategoryAPI = () => request.get('/my/cate/list')

// 增加文章分类API data包含 -> cate_name, cate_alias
const addArticleCategoryAPI = (data) => request.post('/my/cate/add', data)

// 更新文章分类API data包含 -> id ,cate_name, cate_alias
const updateArticleCategoryAPI = (data) => request.put('/my/cate/info', data)

// 删除文章分类API query传参，把id传过去
const delArticleCategoryAPI = (id) =>
  request.delete('/my/cate/del', {
    params: {
      id,
    },
  })

// 发布文章API
// {} 如果是一个普通对象，axios会把它转为JSON字符串在请求体里交给后台
// 这个接口文档要求请求体里是一个 FormData 类型（表单数据对象）携带文件给后台
const uploadArticleAPI = (formData) => request.post('/my/article/add', formData)
// const uploadArticleAPI = (fd) => {
//   return request({
//     url: '/my/article/add',
//     method: 'POST',
//     data: fd,
//   })
// }

// 获取文章列表API params包含 -> pagenum:当前页码数，pagesize:当前页面需要的数据条数 cate_id:文章分类id(注意不是文章id), state:文章状态("已发布"和"草稿")2种值
const getArticleListAPI = (params) =>
  request.get('/my/article/list', { params })
// const getArticleListAPI = ({ pagenum, pagesize, cate_id, state }) => {
//   return request({
//     url: '/my/article/list',
//     params: {
//       pagenum,
//       pagesize,
//       cate_id,
//       state,
//     },
//   })
// }

// 获取文章详情API query传参，把id传过去
const getArticleDetailsAPI = (id) =>
  request.get('/my/article/info', {
    params: {
      id,
    },
  })

// 删除文章API query传参，把id传过去
const delArticleAPI = (id) =>
  request.delete('/my/article/info', {
    params: {
      id,
    },
  })

export {
  regAPI,
  loginAPI,
  getUserInfoAPI,
  getMenusAPI,
  updtaeUserInfoAPI,
  updtaeUserAvatarAPI,
  updtaeUserPwdAPI,
  getArticleCategoryAPI,
  addArticleCategoryAPI,
  updateArticleCategoryAPI,
  delArticleCategoryAPI,
  uploadArticleAPI,
  getArticleListAPI,
  getArticleDetailsAPI,
  delArticleAPI,
}
